package com.tanhua.dubbo.api;

import com.tanhua.domain.mongo.CommonLikeUser;
import com.tanhua.domain.vo.PageResult;

/**
 * @author anshuai
 * @create 2021-02-05 16:33
 */
public interface UserLikeApi {

    /**
     * 查询用户喜欢了多少人
     * @param userId 用户id
     * @return userId喜欢的人的数量
     */
    long queryLikeCount(long userId);

    /**
     * 查询用户有多少粉丝（有多少人喜欢这个用户）
     * @param userId 用户id
     * @return 粉丝数量
     */
    long queryFansCount(long userId);

    /**
     * 查询好友数量（相互喜欢）
     * @param userId 用户id
     * @return 好友数量
     */
    long queryFriendsCount(long userId);

    /**
     * 分页查询好友列表（相互喜欢列表）
     * @param userId 用户id
     * @param page 页码
     * @param pagesize 查询几条
     * @return 分页结果
     */
    PageResult<CommonLikeUser> queryFriendsList(Long userId, int page, int pagesize);

    /**
     * 分页查询喜欢的用户列表
     * @param userId 用户id
     * @param page 页码
     * @param pagesize 查询几条
     * @return 分页结果
     */
    PageResult<CommonLikeUser> queryLikeList(Long userId, int page, int pagesize);

    /**
     * 分页查询粉丝列表
     * @param userId 用户id
     * @param page 页码
     * @param pagesize 查询几条
     * @return 分页结果
     */
    PageResult<CommonLikeUser> queryFansList(Long userId, int page, int pagesize);

    /**
     * 分页查询来访者
     * @param userId 用户id（被访问者）
     * @param page 页码
     * @param pagesize 查询几条
     * @return 分页结果
     */
    PageResult<CommonLikeUser> findVisitorList(Long userId, int page, int pagesize);

    /**
     * 删除用户对当前用户的喜欢
     * @param userId 用户id
     * @param likeUserId 将要取消喜欢的用户id
     */
    void delete(Long userId, Long likeUserId);

    /**
     * 保存喜欢
     *
     * @param userId 当前用户id
     * @param likeUserId 喜欢的用户id
     * @return 当前喜欢关系表的id
     */
    String saveUserLike(Long userId, Long likeUserId);

    /**
     * 相互喜欢
     *
     * @param userId 当前用户id
     * @param likeUserId 喜欢的用户id
     * @return
     */
    Boolean isMutualLike(Long userId, Long likeUserId);
}
